In today's technological environment, an operating system—the low-level software that manages the interface to a computing device's hardware, schedules tasks, allocates storage, and generally provides common services for application software executing on the computer—is commonly built and deployed with a fixed and well-defined operating system application program interface (API). That is, an operating system's API provides an interface (i.e., a set of calling conventions) by which application programs access the operating system and other services on a particular computing device (e.g., desktop, laptop, notebook, tablet computer, personal digital assistant (PDA), mobile telephone, smart telephone and the like). For example, the Windows® 7 operating system (available from Microsoft Corporation of Redmond, Wash.) provides the “Windows SDK” API which gives application developers a fixed and well-known API surface with which to develop application programs. This is also true for all other computing devices for which consumers expect to run application programs (i.e., any non-operating system software applications or “apps”).
In the conventional operating system API model, the operating system provider/manufacturer ships a computing device with the entire underlying operating system API implemented within the operating system image. This is because exposing a consistent API surface to developers provides application compatibility across devices. There may be a number of situations, however, where implementing the entire API locally does not make sense due to location, power constraints or other factors. However, if the entire API is not implemented on the computing device, a run-time error will occur when an executing application program makes a specific call to an unimplemented API call.